1 using System.Collections;
2 using
System.Collections.Generic;
3 using
UnityEngine;
4
5 public
class RookMovement : Movement, IPieceMovement {
6
7     
public RookMovement(GCPlayer player, Piece piece) : base(player,piece) {
8         BoundComputations += ComputeBound;
9     }
10
11     
public override void ComputeBound() {
12         Node currNode = piece.Node;
13         
int origRow = currNode.row;
14         
int origCol = currNode.col;
15     
16         Grid grid = GameManager.Instance.Grid;
17         
//up
18         
for (int up = 1; up + origRow < grid.Rows; up++) {
19             
int newRow = up + origRow;
20             Node newNode = grid.GetNodeAt(newRow, origCol);
21             
if (ComputeMoveOrEatPieceEnemyAlly(newNode)) break;
22         }
23
24         
//left
25         
for (int left = -1; left + origCol >= 0; left--) {
26             
int newCol = left + origCol;
27             Node newNode = grid.GetNodeAt(origRow, newCol);
28             
if (ComputeMoveOrEatPieceEnemyAlly(newNode)) break;
29         }
30
31         
//right
32         
for (int right = 1; right + origCol < grid.Cols; right++) {
33             
int newCol = right + origCol;
34             Node newNode = grid.GetNodeAt(origRow, newCol);
35             
if (ComputeMoveOrEatPieceEnemyAlly(newNode)) break;
36         }
37
38         
//down
39         
for (int bot = -1; bot + origRow >= 0; bot--) {
40             
int newRow = bot + origRow;
41             Node newNode = grid.GetNodeAt(newRow, origCol);
42             
if (ComputeMoveOrEatPieceEnemyAlly(newNode)) break;
43         }
44     }
45 }


up

left

right

down



Gõ tìm kiếm nhanh...